/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.mybeans;
 
import org.mybeans.ComerciosBeans;
import org.mybeans.ContribuyentesBeans;
import org.mybeans.BiciclesBeans;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;

public class RecibesBeans {

    private int IdRecibo;
    private java.sql.Date Fecha;
    private String Id;
    private String TipoId;
    private String Anulado;
    private String Exonerado;
    private String Moroso;
    private String IdMunicipio;
    private double TotalPagado;
    private double TotalExonerado;
    private String IdExonerado;
    private String UserName;
    private String TipoRecibo;
    private String NombrePagador;
    private String NombreFuncionario;
    private String CedulaTesoreroMunicipal;
    private int    IdReciboAuxiliar;
    Sesion sesion;

    public RecibesBeans() {
        sesion = new Sesion();
    }

    public String getCedulaTesoreroMunicipal() {
        return CedulaTesoreroMunicipal;
    }

    public void setCedulaTesoreroMunicipal(String CedulaTesoreroMunicipal) {
        this.CedulaTesoreroMunicipal = CedulaTesoreroMunicipal;
    }

    public int getIdReciboAuxiliar() {
        return IdReciboAuxiliar;
    }

    public void setIdReciboAuxiliar(int IdReciboAuxiliar) {
        this.IdReciboAuxiliar = IdReciboAuxiliar;
    }


    public String getNombrePagador() {
        return NombrePagador;
    }

    public void setNombrePagador(String NombrePagador) {
        this.NombrePagador = NombrePagador;
    }

    public String getAnulado() {
        return Anulado;
    }

    public void setAnulado(String Anulado) {
        this.Anulado = Anulado;
    }

    public String getExonerado() {
        return Exonerado;
    }

    public void setExonerado(String Exonerado) {
        this.Exonerado = Exonerado;
    }

    public int getIdRecibo() {
        return IdRecibo;
    }

    public void setIdRecibo(int IdRecibo) {
        this.IdRecibo = IdRecibo;
    }

    public String getMoroso() {
        return Moroso;
    }

    public void setMoroso(String Moroso) {
        this.Moroso = Moroso;
    }

    public String getTipoId() {
        return TipoId;
    }

    public void setTipoId(String TipoId) {
        this.TipoId = TipoId;
    }

    public double getTotalExonerado() {
        return TotalExonerado;
    }

    public void setTotalExonerado(double TotalExonerado) {
        this.TotalExonerado = TotalExonerado;
    }

    public double getTotalPagado() {
        return TotalPagado;
    }

    public void setTotalPagado(double TotalPagado) {
        this.TotalPagado = TotalPagado;
    }

    public Date getFecha() {
        return Fecha;
    }

    public void setFecha(Date Fecha) {
        this.Fecha = Fecha;
    }

    public String getId() {
        return Id;
    }

    public void setId(String Id) {
        this.Id = Id;
    }

    public String getIdExonerado() {
        return IdExonerado;
    }

    public void setIdExonerado(String IdExonerado) {
        this.IdExonerado = IdExonerado;
    }

    public String getIdMunicipio() {
        return IdMunicipio;
    }

    public void setIdMunicipio(String IdMunicipio) {
        this.IdMunicipio = IdMunicipio;
    }

    public String getTipoRecibo() {
        return TipoRecibo;
    }

    public void setTipoRecibo(String TipoRecibo) {
        this.TipoRecibo = TipoRecibo;
    }

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String UserName) {
        this.UserName = UserName;
    }

    public String getNombreFuncionario() {
        return NombreFuncionario;
    }

    public void setNombreFuncionario(String NombreFuncionario) {
        this.NombreFuncionario = NombreFuncionario;
    }

    /*
     * Guarda el recibo
     *
     */
    public boolean GuardarRecibo() {
        try {

            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sqlquery = "select * from recibes where idmunicipio = ? and idrecibo =?";
            PreparedStatement psquery = sesion.con.prepareStatement(sqlquery);
            psquery.setString(1, sesion.getIdmunicipio());
            psquery.setInt(2, IdRecibo);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();

            if (x != 0) {
                JOptionPane.showMessageDialog(null, "Existe un recibo con ese numero", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return false;
            }

            String sql = "insert into recibes " +
                    "(idrecibo,fecha,id, tipoid,anulado,"+
                    "exonerado, moroso,idmunicipio,totalpagado,totalexonerado,"+
                    "idexonerado,idusuario,tiporecibo,cedulatesoreroauxiliar,idreciboauxiliar)"+
                    "values( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";


            PreparedStatement prest = sesion.con.prepareStatement(sql);

            prest.setInt(1, IdRecibo);
            prest.setDate(2, Fecha); //fecha
            prest.setString(3, Id);
            prest.setString(4, TipoId);
            prest.setString(5, Anulado); //anulado
            prest.setString(6, Exonerado); //exonerado
            prest.setString(7, Moroso); //moroso
            prest.setString(8, sesion.getIdmunicipio());
            prest.setDouble(9, TotalPagado);
            prest.setDouble(10, TotalExonerado);
            prest.setString(11, IdExonerado);
            prest.setString(12, sesion.getUsername());
            prest.setString(13, TipoRecibo);
            prest.setString(14, CedulaTesoreroMunicipal);
            prest.setInt(15, IdReciboAuxiliar);
            int count = prest.executeUpdate();
            sesion.con.close();
            return true;
        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error", "Clase:RecibesBeans.java\nMetodo:GuardarRecibo() " + ex.getMessage().toString());
        }
        return false;
    }

    public boolean ConsultarRecibo() {
        try {
            this.Id = "";
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sqlquery = "select recibes.*, usuarios.usuario from recibes, usuarios where recibes.idmunicipio = ? and recibes.idrecibo =? and recibes.anulado='no' and usuarios.idmunicipio = ? and usuarios.username = recibes.idusuario and usuarios.activo='si'";
            PreparedStatement psquery = sesion.con.prepareStatement(sqlquery);
            psquery.setString(1, sesion.getIdmunicipio());
            psquery.setInt(2, IdRecibo);
            psquery.setString(3, sesion.getIdmunicipio());
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
                JOptionPane.showMessageDialog(null, "No existe un recibo con ese numero", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return false;
            }
            this.Id = rs.getString("id");
            this.TipoId = rs.getString("tipoid");
            this.TipoRecibo = rs.getString("tiporecibo");
            this.Exonerado = rs.getString("exonerado");
            this.Fecha = rs.getDate("fecha");
            this.TotalPagado = rs.getDouble("totalpagado");
            this.TotalExonerado = rs.getDouble("totalexonerado");
            this.NombreFuncionario = rs.getString("usuario");
            Exonerado = Exonerado.trim();
            this.IdExonerado = "";
            if (Exonerado.equals("si")) {
                this.IdExonerado = rs.getString("idexonerado");
            }

            sesion.con.close();
            this.TipoId = this.TipoId.trim();
            this.NombrePagador = "";
            if (this.TipoId.equals("contribuyentes")) {
                ContribuyentesBeans contribuyentesBeans = new ContribuyentesBeans();
                if (contribuyentesBeans.Consultar(Id) == true) {
                    this.NombrePagador = contribuyentesBeans.getContribuyente();
                } else {
                    JOptionPane.showMessageDialog(null, "No existe un contribuyente con esa cedula: " + this.Id + " verifique", "Mensaje", JOptionPane.WARNING_MESSAGE);
                }

            } else {
                if (this.TipoId.equals("comercios")) {
                    ComerciosBeans comerciosBeans = new ComerciosBeans();
                    comerciosBeans.setIdComercio(Id);
                    if (comerciosBeans.Consultar() == true) {
                        this.NombrePagador = comerciosBeans.getComercio();
                    } else {
                        JOptionPane.showMessageDialog(null, "No existe un comercio con ese codigo: " + this.Id + " verifique", "Mensaje", JOptionPane.WARNING_MESSAGE);
                    }
                } else {
                    if (this.TipoId.equals("vehiculos")) {
                        VehiculosBeans vehiculosBeans = new VehiculosBeans();
                        vehiculosBeans.setIdVehiculo(Id);
                        if (vehiculosBeans.Consultar() == true) {
                            this.NombrePagador = "Placa: " + vehiculosBeans.getPlaca() + " " + vehiculosBeans.getDueno();
                        } else {
                            JOptionPane.showMessageDialog(null, "No existe un vehiculo con ese codigo: " + this.Id + " verifique", "Mensaje", JOptionPane.WARNING_MESSAGE);
                        }
                    } else {
                        if (this.TipoId.equals("remolques")) {
                            RemolquesBeans remolquesBeans = new RemolquesBeans();
                            remolquesBeans.setIdRemolque(Integer.parseInt(Id));
                            if (remolquesBeans.Consultar() == true) {
                                this.NombrePagador = "Placa: " + remolquesBeans.getPlaca() + " " + remolquesBeans.getDueno();
                            } else {
                                JOptionPane.showMessageDialog(null, "No existe un vehiculo con ese codigo: " + this.Id + " verifique", "Mensaje", JOptionPane.WARNING_MESSAGE);
                            }
                        } else {
                            if (this.TipoId.equals("bicicletas")) {
                                BiciclesBeans biciclesBeans = new BiciclesBeans();
                                biciclesBeans.setIdBicileta(Integer.parseInt(Id));
                                if (biciclesBeans.Consultar() == true) {
                                    this.NombrePagador = "Placa: " + biciclesBeans.getPlaca() + " " + biciclesBeans.getDueno();
                                } else {
                                    JOptionPane.showMessageDialog(null, "No existe un vehiculo con ese codigo: " + this.Id + " verifique", "Mensaje", JOptionPane.WARNING_MESSAGE);
                                }
                            }
                        }
                    }
                }
            }

            return true;
        } catch (Exception ex) {

            JOptionPane.showMessageDialog(null, "Clase:RecibesBeans.java\nMetodo:ConsultarRecibo()\nError: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
        return false;
    }

    public boolean GuardarReciboAnulado() {
        try {

            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sqlquery = "select * from recibes where idmunicipio = ? and idrecibo =?";
            PreparedStatement psquery = sesion.con.prepareStatement(sqlquery);
            psquery.setString(1, sesion.getIdmunicipio());
            psquery.setInt(2, IdRecibo);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();

            if (x == 0) {
                JOptionPane.showMessageDialog(null, "No existe un recibo con ese numero", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                sesion.con.close();
                return false;
            }

            String sql = "update recibes set anulado = 'si' where idmunicipio =? and idrecibo =?";


            PreparedStatement prest = sesion.con.prepareStatement(sql);
            prest.setString(1, sesion.getIdmunicipio());
            prest.setInt(2, IdRecibo);

            int count = prest.executeUpdate();
            sesion.con.close();
            return true;
        } catch (Exception ex) {

            sesion.MostrarMensajeError("Error", "Clase:RecibesBeans.java\nMetodo:GuardarReciboAnulado() " + ex.getMessage().toString());
        }
        return false;
    }
} //class

